﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using qltscd.Models;
using qltscd.Models.ScreenClient;
using qltscd.Contansts;
using Telerik.Web.Mvc;
using qltscd.Helper;

namespace qltscd.Controllers
{
    public class DangNhapController : Controller
    {
		//Huynh moi sua
	
        public ActionResult Index (qltscd.Models.BaseClient.DanhMucHangSanXuat hang) {
            QLTBEntities db = new QLTBEntities();
            List<DanhMucDonViQuanLy> dvs = db.DanhMucDonViQuanLies.OrderBy(o => o.MaDonVi).ToList();
            ViewBag.IdentityDonVi = new SelectList(dvs, "IdentityDonVi", "TenDonVi");
            return View();
        }
        
        /// <summary>
        /// Hàm đăng nhập
        /// </summary>
        /// <param name="UserName">tên đăng nhập của người dùng nhập vào</param>
        /// <param name="Password">mật khẩu của người dùng nhập vào</param>
        /// <returns>Nếu đăng nhập thành công sẽ tự chuyển sang màn hình chính của chương trình, 
        /// ngược lại sẽ quay lại trang đăng nhập với thông báo 'Sai tên đăng nhập hoặc mật khẩu. Vui lòng thử lại'</returns>
        [HttpPost]
        public ActionResult DangNhap (string UserName, string Password, string IdentityDonViQuanLy) {
            if (IdentityDonViQuanLy == null || IdentityDonViQuanLy == "") {
                Session["ErrorMsg"] = "Vui lòng chọn đơn vị quản lý";
                return RedirectToAction("Index");
            }
            
            QLTBEntities db = new QLTBEntities();
            try {
                int dvql = Convert.ToInt32(IdentityDonViQuanLy);
                DanhMucNguoiDung user = db.DanhMucNguoiDungs.Single(i => i.TenDangNhap == UserName 
                            && i.MatKhau == Password
                            && i.IdentityDonVi == dvql);
                if (user == null) {
                    Session["ErrorMsg"] = "Sai thông tin đăng nhập";
                    return RedirectToAction("Index");
                }
                SessionHelper.SetUser(user);
                Session["ErrorMsg"] = "";
                return RedirectToAction("Index", "TacVu");
            } catch (InvalidOperationException e) {
                Session["ErrorMsg"] = "Sai thông tin đăng nhập";
                return RedirectToAction("Index");
            } catch (Exception e) {
                Session["ErrorMsg"] = "Không thể kết nối đến server. Vui lòng liên hệ trợ giúp";
                return RedirectToAction("Index");
            }
        }
        /// <summary>
        /// Đưa người dùng trở về màn hình đăng nhập và xóa thông tin đăng nhập và xóa thông tin người đang đăng nhập
        /// </summary>
        /// <returns></returns>
        public ActionResult LogOut () {
            SessionHelper.ClearUser();
            return RedirectToAction("Index", "DangNhap");
        }
    }
}